메인 콘텐츠로 이동하기
  1. 블로그 글/

통계 - 독립표본 T 검정(Independent Samples t-Test)

본 글은 통계학에서 사용되는 독립표본 T 검정(Independent Samples t-Test)을 설명하기 위해 작성되었습니다.

금번에도 파이썬 라이브러리 Scipy를 활용하여 독립표본 T 검정을 진행하도록 하겠습니다.

독립표본 T 검정 #

독립표본 T 검정이란 두 개의 독립된 표본 간에 평균 차이가 통계적으로 유의미한지를 검정하는 통계 분석 기법입니다. 이는 두 그룹 간의 평균 차이가 우연히 발생한 것인지 아니면 진짜로 존재하는 것인지를 판단하는 데 사용됩니다.

독립표본 T 검정의 주요 단계는 다음과 같습니다.

1. 가설 설정 #

H₀ : 𝜇₁  = 𝜇₂ → 귀무가설 두 그룹의 평균은 같다.
H₁ : 𝜇₁  ≠ 𝜇₂ → 대립가설 두 그룹의 평균은 다르다.

2. 정규성 검정 #

두 그룹의 표본 수가 30개 이하일 경우, 정규성 검정을 실시해야 합니다.

두 그룹의 표본 수가 30개 이상일 경우, 중심극한정리에 의해 정규성을 만족했다고 가정합니다.

  • Scipy에서 정규성 검정은 Shapiro-Wilk 검정을 통해서 확인 가능합니다.

3. 등분산성 검정 #

두 그룹의 데이터 수가 같다면, 분산이 같다고 가정합니다.

두 그룹의 데이터 수가 다르다면, 분산이 같은지 확인하기 위해 등분산성 검정을 수행할 수 있습니다.

  • Scipy에서 등분산성 검정은 Levene 검정을 통해서 확인 가능합니다

4. 독립표본 T 통계량 계산 #

두 그룹의 평균과 표준편차를 사용하여 독립표본 T 통계량을 계산합니다.

5. 결정/결론 #

계산된 T 통계량이 임계값을 초과하면 귀무가설을 기각하고 대립가설을 채택합니다.

그렇지 않으면 귀무가설을 기각하지 않습니다.

통계적으로 유의한 차이가 있다면, 두 그룹 간에 평균 차이가 존재한다고 결론 내립니다.

독립표본 T 검정은 두 그룹 간의 평균 차이를 비교하는 데 유용하며, 실험 그룹과 대조 그룹 간의 차이를 조사하거나 두 가지 조건 간의 효과를 확인하는 등의 상황에서 적용될 수 있습니다.

파이썬 라이브러리 Scipy 활용 방법 #

다음은 파이썬 Scipy 라이브러리를 활용하여 독립표본 T 검정을 진행하도록 하겠습니다.책 누구나 파이썬 통계분석의 챕터 11의 데이터 파일 ch11_training_ind.csv을 사용하였습니다.

책은 아래 링크를 통해 구입 가능합니다.

https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=237744461&start=slayer

이번에 다루는 데이터에는 인문 계열 학생이 많은 A의 학급에서는 근력운동을 하는 학생이 부쩍 늘어 A는 혹시 근력운동이 집중력을 향상히는 효과가 있다면 자신의 학급과 평소에 근력운동을 하고 있는 체육 계열 학생이 많은 B의 학급 사이에 집중력 테스트의 평균에서 차이가 나지 않을까 생각하여, B의 학급에도 집중력 테스트를 받게 한 결과입니다.

A와 B의 학급의 집중력에 유의한 차이가 있는지 독립표본 T 검정을 통해 알아보고자 합니다.

가설은 아래와 같습니다.

귀무가설 : A와 B의 학급의 평균은 같다.

대립가설 : A와 B의 학급의 평균은 같지 않다.

유의수준은 0.05로 설정하도록 하겠습니다.

우선 데이터를 불러오도록 하겠습니다.데이터 파일은 하기 링크를 통해 다운로드 가능합니다.

https://www.hanbit.co.kr/support/supplement_list.html

>>> import pandas as pd
>>> from scipy import stats
>>> df = pd.read_csv("./data/ch11_training_ind.csv")
>>> df.head()
A B
0 47 49
1 50 52
2 37 54
3 60 48
4 39 51

다음은 정규성 검정을 하도록 하겠습니다.

>>> a = stats.shapiro(df['A'])
>>> b = stats.shapiro(df['B'])
>>> print(a, b)
ShapiroResult(statistic=0.9685943722724915, pvalue=0.7249553203582764) 
ShapiroResult(statistic=0.9730021357536316, pvalue=0.8165789842605591)

결과는 모두 p-value가 0.05보다 커서 정규성을 만족합니다.

다음으로 해당 데이터는 데이터의 개수가 같기 때문에 등산이 같다고 가정하지만, 각 그룹의 데이터수가 다르면 분산이 같은지 검정해야 하기 때문에 levene을 통해서 아래와 같이 확인이 가능합니다.

>>> stats.levene(df['A'], df['B'])
LeveneResult(statistic=2.061573118077718, pvalue=0.15923550057222613)

p-value가 0.159 이므로 귀무가설(두 그룹의 분산은 차이가 없다)을 채택합니다.

다음으로는, Scipy 라이브러리 내에 있는 ttest_ind를 통해 t통계량과 p-value를 구할 수 있습니다.

>>> t, p = stats.ttest_ind(df['A'], df['B'], equal_var=False) # equal_var=False : 웰치의 방법
>>> t, p
(-1.760815724652471, 0.08695731107259362)

p-value가 유의수준인 0.05보다 크기 때문에 귀무가설(A와 B의 학급의 평균이 같다)이 채택되었습니다. 따라서 A의 학급과 B의 학급 사이에는 평균 점수에 유의한 차이가 있다고 말할수 없다는 결론을 내릴 수 있습니다.